﻿#include <iostream>
#include<future>   //std::future  std::async
using namespace std;

int async_future() {
	cout << "我是async_future" << endl;
	return 6;
}

int main9() {
	//future用于存储子线程数据返回(记录异步结果)
	//async用于*系统自动管理资源*和*返回异步结果*
	//当子线程需要很久的运行时间又要异步结果时候使用

	//std::launch::async表示在调用async时立即创建一个异步任务，并在线程池中执行
	//std::launch::deferred表示调用async时不会立即创建任务，而是延迟到调用future的get()或wait()时才创建任务
	std::future<int> f = std::async(std::launch::async, async_future);
	//f.wait();  //等待线程完成(不获取返回值)
	cout << f.get() << endl;  //获取返回值(如果线程未完成，阻塞等待返回)
	return 0;
}